"""
    形态学操作
    1. 腐蚀
        cv.erode(img, kernel, iteration)
            参数：img:要处理的图像，kernel：核结构，iteration:腐蚀的次数，默认是1
            作用：消除物体边界点，使目标缩小，可以消除小于结构元素的噪声点
    2. 膨胀
        cv.dilate(img, kernel, iteration)
            参数：img:要处理的图像，kernel：核结构，iteration:膨胀的次数，默认是1
            作用：将与物体接触的所有背景点合并到物体中，使目标增大，可添补目标中的孔洞

"""
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

# 1. 读取图像
img = cv.imread("image/img.png")

# 2. 创建核结构
kernel = np.ones((5, 5), np.uint8)

# 3. 图像腐蚀和膨胀
erosion = cv.erode(img, kernel)  # 腐蚀
dilate = cv.dilate(img, kernel)  # 膨胀

# 4. 图像展示
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(10, 8), dpi=100)
axes[0].imshow(img[:, :, ::-1])
axes[0].set_title("原图")
axes[1].imshow(erosion[:, :, ::-1])
axes[1].set_title("腐蚀后结果")
axes[2].imshow(dilate[:, :, ::-1])
axes[2].set_title("膨胀后结果")
plt.show()
